﻿namespace Core.Items.Modules
{
    /*

		MetaGroup                      = EngineeringEquipment
		Group                          = EngineeringTunings
		Module                         = standard enwar upgrade
		CpuUsage                       = 25.00 TF
		ReactorUsage                   = 45.00 RP
		Type                           = Passive
		Slot                           = Legs
		TechnologicalLevel             = T1
		Mass                           = 250.00 kg
		PackedVolume                   = 0.50 U
		Volume                         = 1.00 U
		DrainedEnergyAmount            = 10 %
		AccumulatorUsage               = 10.00 %
		NeutralizedEnergyAmount        = 20 %
    */

    using System;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;
    using Extensions;
    using Features;

    /// <summary>
    /// Standard EnWar Upgrade tuning module class
    /// </summary>
    /// <remarks>File generated on 22/04/2014 11:31:53</remarks>
    public sealed class StandardEnwarUpgrade : ModuleBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="StandardEnwarUpgrade"/> class.
        /// </summary>
        public StandardEnwarUpgrade()
            : base(
            "Standard EnWar Upgrade",
            "",
            ModuleMetaGroupsEnum.EngineeringEquipment,
            ModuleGroupsEnum.EngineeringTunings,
            TechnologyLevelsEnum.Level1,
            SizesEnum.Small,
            new LazyFeature[] { 
				new LazyFeature(typeof(EngineeringCpuUsage<double>),25.00),
				new LazyFeature(typeof(ReactorUsage<double>),45.00),
				new LazyFeature(typeof(ModuleMass<double>),250.00), },
            null,
            new IModifier[] { 
				new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.RobotMass, 250.00 ){ IsVisible = false },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.EnergyDrainerDrainedEnergy, 0.1 ){ Unit = UnitsEnum.AccumulatorPoints, DisplayName = "Drained energy"  },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.DrainerAccumulatorUsage, 0.1 ){ Unit = UnitsEnum.AccumulatorPoints, DisplayName = "Drainer accumulator usage"  },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.EnergyNeutralizerNeutralizedEnergy, 0.2 ){ Unit = UnitsEnum.AccumulatorPoints, DisplayName = "Neutralized Energy"  },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.EnergyNeutralizerAccumulatorUsage, 0.1 ){ Unit = UnitsEnum.AccumulatorPoints, DisplayName = "Neutralizer accumulator usage"  },
				 })
        {
        }

        /// <summary>
        /// Obtains the activation type
        /// </summary>
        public override ModuleActivationTypesEnum ActivationType
        {
            get { return ModuleActivationTypesEnum.Passive; }
        }
        /// <summary>
        /// Obtains the module slot group 
        /// </summary>
        public override SlotGroupsEnum SlotGroup
        {
            get { return SlotGroupsEnum.Legs; }
        }
        /// <summary>
        /// Obtains the module slot type 
        /// </summary>
        public override SlotTypesEnum SlotType
        {
            get { return SlotTypesEnum.Modules; }
        }
    }
}